import type { DrawPalette } from '../DrawPalette';
import type { ISegMaskInfo2 } from './DrawPalette.type';

export enum EMarkTool {
  AUTO_SELECT = 'AUTO_SELECT', // 自动加选
  AUTO_MINUS = 'AUTO_MINUS', // 自动减选
  BRUSH = 'BRUSH', // 画笔
  ERASER = 'ERASER', // 橡皮擦
}

export interface IBasePaletteOption {
  wrapper: HTMLDivElement;
  defaultMarkTool?: EMarkTool;
  defaultStrokeWidth?: number;
  defaultStrokeColor?: string;
  maxHistoryStackSize?: number;
}

/**
 * @description: 鼠标光标类型
 */
export enum ECursorType {
  /** 不展示鼠标光标 */
  NONE = 'none',
  /** 默认光标（通常是一个箭头） */
  DEFAULT = 'default',
  /** 默认。浏览器设置的光标。 */
  AUTO = 'auto',
  /** 光标呈现为十字线。 */
  CROSSHAIR = 'crosshair',
  /** 光标呈现为指示链接的指针（一只手） */
  POINTER = 'pointer',
  /**  此光标指示某对象可被移动。 */
  MOVE = 'move ',
  /** 此光标指示矩形框的边缘可被向右（东）移动 */
  E_RESIZE = 'e-resize ',
  /** 此光标指示矩形框的边缘可被向上及向右移动（北/东） */
  NE_RESIZE = 'ne-resize',
  /** 此光标指示矩形框的边缘可被向上及向左移动（北/西） */
  NW_RESIZE = 'nw-resize ',
  /** 此光标指示矩形框的边缘可被向上（北）移动 */
  N_RESIZE = 'n-resize',
  /** 此光标指示矩形框的边缘可被向下及向右移动（南/东） */
  SE_RESIZE = 'se-resize ',
  /** 此光标指示矩形框的边缘可被向下及向左移动（南/西） */
  SW_RESIZE = 'sw-resize',
  /** 此光标指示矩形框的边缘可被向下移动（南） */
  S_RESIZE = 's-resize ',
  /** 此光标指示矩形框的边缘可被向左移动（西） */
  W_RESIZE = 'w-resize',
  /** 此光标指示文本 */
  TEXT = 'text',
  /**  此光标指示程序正忙（通常是一只表或沙漏）。 */
  WAIT = 'wait', //
  /** 此光标指示可用的帮助 */
  HELP = 'help',
  /** 可抓取 */
  GRAB = 'grab',
  /** 抓取中 */
  GRABBING = 'grabbing',
}

export interface EventMap {
  ['plateInit']: [DrawPalette];
  ['setSegmentationMask']: [ISegMaskInfo2 | null];
}

export type TPathData = ['M' | 'L', number, number];
